package com.dsh.storeManagement.service.Impl;

import com.dsh.storeManagement.entity.vo.AreaNameVo;
import com.dsh.storeManagement.entity.vo.AreaVo;
import com.dsh.storeManagement.entity.vo.StoreAllVo;
import com.dsh.storeManagement.entity.vo.StoreVo;
import com.dsh.storeManagement.dao.StoreDao;
import com.dsh.storeManagement.service.StoreService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * 门店(StoreAdministration)表服务实现类
 *
 * @author makejava
 * @since 2022-04-29 15:42:47
 */
@Service("storeAdministrationService")
public class StoreServiceImpl implements StoreService {
    @Resource
    private StoreDao storeDao;

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    @Override
    public StoreVo queryById(Integer id) {
        return this.storeDao.queryById(id);
    }

    /**
     * 查询多条数据
     *
     * @param offset 查询起始位置
     * @param limit 查询条数
     * @return 对象列表
     */
    @Override
    public List<StoreVo> queryAllByLimit(int offset, int limit) {
        return this.storeDao.queryAllByLimit(offset, limit);
    }

    /**
     * 新增数据
     *
     * @param storeVo 实例对象
     * @return 实例对象
     */
    @Override
    public StoreVo insert(StoreVo storeVo) {
        this.storeDao.insert(storeVo);
        return storeVo;
    }

    /**
     * 修改数据
     *
     * @param storeVo 实例对象
     * @return 实例对象
     */
    @Override
    public int update(StoreVo storeVo) {
        int update = storeDao.update(storeVo);
        return update;
    }

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    @Override
    public boolean deleteById(Integer id) {
        return this.storeDao.deleteById(id) > 0;
    }

    @Override
    public List<StoreVo> selectStoreForAId(String name,int aId) {
        if (name == null){
            List<StoreVo> storeVos = storeDao.selectStoreForAId(aId);
            return storeVos;
        }else {
            List<StoreVo> storeVos = storeDao.selectStoreForAIdAndName(name, aId);
            return storeVos;
        }


    }

    @Override
    public List<AreaVo> selectArea() {
        List<AreaVo> areaVos = storeDao.selectArea();
        return areaVos;
    }

    @Override
    public StoreAllVo selectStoreById(int id) {
        StoreAllVo storeAllVo = storeDao.selectStoreById(id);
        return storeAllVo;
    }

    @Override
    public StoreVo selectForStoreId(int id) {

        StoreVo storeVo = storeDao.selectForStoreId(id);
        AreaNameVo areaNameVo = storeDao.selectAreaList(storeVo.getAId());
        if (areaNameVo!=null){
            AreaNameVo areaNameVo1 = storeDao.selectAreaList(areaNameVo.getPId());
           if (areaNameVo1!=null){
               AreaNameVo areaNameVo2 = storeDao.selectAreaList(areaNameVo1.getPId());
               storeVo.setA1(areaNameVo);
               storeVo.setA2(areaNameVo1);
               storeVo.setA3(areaNameVo2);
           }
        }
        return storeVo;

//        List<Integer> integers = Collections.singletonList(areaNameVo.getPId());
//        ArrayList<AreaNameVo> areaNameVos = new ArrayList<>();
//        for (Integer pid: integers) {
//            AreaNameVo areaNameVos1 = storeDao.selectAreaList(pid);
//            areaNameVos.add(areaNameVos1);
//        }
//
//
//        return storeVo;
    }


//    @Override
//    public List<AdminNameForStoreVo> selectAdminForStoreId(int sId) {
//        List<AdminNameForStoreVo> adminNameForStoreVos = storeDao.selectAdminForStoreId(sId);
//        return adminNameForStoreVos;
//    }
}